package _01_sort.leetcodeexerc;

import org.junit.Test;

import java.util.Arrays;

/**
 * @author: mornd
 * @dateTime: 2023/6/23 - 17:55
 * 根据出现频率排序
 * 给定一个整数数组，按照数组中的每个值的频率升序排序，如果有多个值的频率相同，则按照值本身降序
 * 例如：[3,3,2,1,1] => [2,3,3,1,1]
 */
public class Test2 {

    @Test
    public void test() {
        int[] arr = {1, 2, 2, 3, 3, 4};
        System.out.println(Arrays.toString(sort(arr)));
    }

    private int[] sort(int[] arr) {
        int[] count = new int[10];
        for (int i : arr) {
            count[i]++;
        }
        return Arrays.stream(arr).boxed().sorted((a, b) -> {
            int af = count[a];
            int bf = count[b];
            if (af > bf) {
                return 1;
            } else if (af < bf) {
                return -1;
            } else {
                return b - a;
            }
        }).mapToInt(Integer::intValue).toArray();
    }

}
